﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using PuntoMascotasWeb.BackEnd.BE;
using PuntoMascotasWeb.BackEnd.BC;
using PuntoMascotasWeb.WebSite.Includes.Clases;
using PuntoMascotasWeb.WebSite.Includes.Funciones;

namespace PuntoMascotasWeb.WebSite.Aplicacion.ABM
{
    public partial class abmInsumos : PuntoMascotasWeb.WebSite.Includes.Funciones.Funciones
    {
        protected void Page_Load(object sender, EventArgs e)
        {


            if (!Page.IsPostBack)
            {
                //Carga la pagina por primera vez
                CargarCombos();

                HabilitarControles(false);
                btnNuevo.Enabled = true;
                btnEliminar.Enabled = false;
                btnEditar.Enabled = false;
                btnGuardar.Enabled = false;
                btnCancelar.Enabled = false;
            }

        }

        private void HabilitarControles(Boolean pbEstado)
        {
            
            txtIdInsumo.ReadOnly = !pbEstado;
            txtDescripcion.ReadOnly = !pbEstado;
            txtCantidadActual.ReadOnly = !pbEstado;
            txtCantidadMaxima.ReadOnly = !pbEstado;
            txtCantidadMinima.ReadOnly = !pbEstado;
            txtPrecio.ReadOnly = !pbEstado;
            cmbTipoInsumo.Enabled = pbEstado;
            cmbUnidadMedida.Enabled = pbEstado;
        }
        private void CargarCombos()
        {
            try
            {
                CargarComboTipoInsumo();
                CargarComboUnidadMedida();

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void CargarComboUnidadMedida()
        {

            DataSet woDs;
            DataRow woDr;

            try
            {
                woDs = UnidadMedidaBC.GetAll();

                if (woDs != null)
                {
                    if (woDs.Tables.Count > 0)
                    {
                        woDr = woDs.Tables[0].NewRow();
                        woDr["IdUnidadMedida"] = 0;
                        woDr["Descripcion"] = "Seleccione Unidad de Medida...";
                        woDs.Tables[0].Rows.InsertAt(woDr, 0);


                        cmbTipoInsumo.Items.Clear();
                        cmbTipoInsumo.DataSource = woDs.Tables[0];
                        cmbTipoInsumo.DataTextField = "Descripcion";
                        cmbTipoInsumo.DataValueField = "IdUnidadMedida";
                        cmbTipoInsumo.DataBind();
                    }
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void CargarComboTipoInsumo()
        {
            DataSet woDs;
            DataRow woDr;

            try
            {
                woDs = TipoInsumoBC.GetAll();

                if (woDs != null)
                {
                    if (woDs.Tables.Count > 0)
                    {
                        woDr = woDs.Tables[0].NewRow();
                        woDr["IdTipoInsumo"] = 0;
                        woDr["Descripcion"] = "Seleccione un Tipo de Insumo...";
                        woDs.Tables[0].Rows.InsertAt(woDr, 0);


                        cmbTipoInsumo.Items.Clear();
                        cmbTipoInsumo.DataSource = woDs.Tables[0];
                        cmbTipoInsumo.DataTextField = "Descripcion";
                        cmbTipoInsumo.DataValueField = "IdTipoInsumo";
                        cmbTipoInsumo.DataBind();
                    }
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            InsumosBE woInsumosBE;
            //Boolean wbRetornaMenu=false

            try
            {
                woInsumosBE=new InsumosBE();

                //woInsumosBE.IdInsumo=Convert.ToInt32(txtIdInsumo.Text.Trim());
                woInsumosBE.Descripcion=txtDescripcion.Text.Trim();
                woInsumosBE.CantidadActual=Convert.ToInt32(txtCantidadActual.Text.Trim());
                woInsumosBE.CantidadMaxima=Convert.ToInt32(txtCantidadMaxima.Text.Trim());
                woInsumosBE.CantidadMinima=Convert.ToInt32(txtCantidadMinima.Text.Trim());
                woInsumosBE.IdUnidadMedida=Convert.ToInt32(cmbUnidadMedida.SelectedValue);
                woInsumosBE.Precio=Convert.ToDecimal(txtPrecio.Text.Trim());
                woInsumosBE.IdTipoInsumo=Convert.ToInt32(cmbTipoInsumo.SelectedValue);

                if((Constantes.Modo)ViewState["Modo"]==Constantes.Modo.Nuevo)
                {
                    InsumosBC.Insert(woInsumosBE);
                    txtIdInsumo.Text=woInsumosBE.IdInsumo.ToString();
                    ShowMessage("Insumo registrado con éxito!");
                    
                }
                else if((Constantes.Modo)ViewState["Modo"]==Constantes.Modo.Editar)
                {
                    woInsumosBE.IdInsumo=Convert.ToInt32(txtIdInsumo);
                    InsumosBC.Update(woInsumosBE);
                    ShowMessage("Insumo actualizado con éxito!");
                
                }

                btnNuevo.Enabled = true;
                btnEliminar.Enabled = true;
                btnEditar.Enabled = true;
                btnGuardar.Enabled = true;
                btnCancelar.Enabled = true;
                HabilitarControles(false);
                               
                
                dgvInsumos.Enabled = true;
               
                CargarGrilla();


            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

            public void CargarGrilla()
            {
                InsumosBE woInsumosBE;
                DataSet woDs;

                try
                {
                    woInsumosBE = new InsumosBE();
                    woDs= InsumosBC.GetByParam(woInsumosBE);


                    if (woDs != null)
                    {
                        if (woDs.Tables.Count > 0)
                        {
                            dgvInsumos.DataSource = woDs.Tables[0];
                            dgvInsumos.DataBind();
                            return;
                        }
                }

                    dgvInsumos.DataSource = null;

                }
                catch (Exception ex)
                {
                    throw ex;
                }
            
            }

            protected void dgvInsumos_SelectedIndexChanged(object sender, GridViewSelectEventArgs e)
            {

                //try
                //{
                //    dgvInsumos.Focus();

                
                
                //}


            }

            private void seleccionarRegistroGrilla(Int32 piIndex)
            {
                try
                {
                    this.txtDescripcion.Text = dgvInsumos.Rows[piIndex].Cells[1].Text;

                    
                }

            
            }

            protected void btnNuevo_Click(object sender, EventArgs e)
            {
                try
                {
                    HabilitarControles(true);

                    btnNuevo.Enabled = false;
                    btnEliminar.Enabled = false;
                    btnEditar.Enabled = false;
                    btnGuardar.Enabled = false;
                    btnCancelar.Enabled = false;
                    dgvInsumos.Enabled = false;

                    txtIdInsumo.Text = string.Empty;
                    txtDescripcion.Text = string.Empty;
                    txtCantidadActual.Text = string.Empty;
                    txtCantidadMaxima.Text = string.Empty;
                    txtCantidadMinima.Text = string.Empty;
                    txtPrecio.Text = string.Empty;
                    cmbTipoInsumo.SelectedIndex = -1;
                    cmbUnidadMedida.SelectedIndex = -1;

                    txtDescripcion.Focus();
                    ViewState["Modo"] = Constantes.Modo.Nuevo;
                }

                catch(Exception ex)
                {
                    ProcesarExcepciones(ex);
                }
            }

            protected void btnEditar_Click(object sender, EventArgs e)
            {

                try
                {

                    HabilitarControles(true);


                    btnNuevo.Enabled = false;
                    btnEliminar.Enabled = false;
                    btnEditar.Enabled = false;
                    btnGuardar.Enabled = false;
                    btnCancelar.Enabled = false;
                    dgvInsumos.Enabled = false;

                    txtDescripcion.Focus();
                    ViewState["Modo"] = Constantes.Modo.Editar;
                }

                catch(Exception ex)
                {
                    ProcesarExcepciones(ex);
                }
            }

            protected void btnCancelar_Click(object sender, EventArgs e)
            {

                try
                {

                    HabilitarControles(false);
                    ViewState["Modo"] = Constantes.Modo.Nada;

                    btnNuevo.Enabled = true;
                    btnEliminar.Enabled = true;
                    btnEditar.Enabled = true;
                    btnCancelar.Enabled = true;
                    btnGuardar.Enabled = true;

                    dgvInsumos.Enabled = true;

                    CargarGrilla();

                    txtIdInsumo.Text = string.Empty;
                    txtDescripcion.Text = string.Empty;
                    txtCantidadActual.Text = string.Empty;
                    txtCantidadMaxima.Text = string.Empty;
                    txtCantidadMinima.Text = string.Empty;
                    txtPrecio.Text = string.Empty;
                    cmbTipoInsumo.SelectedIndex = -1;
                    cmbUnidadMedida.SelectedIndex = -1;
                }

                catch (Exception ex)
                {
                    ProcesarExcepciones(ex);
                }
            }

            protected void btnEliminar_Click(object sender, EventArgs e)
            {
                try
                {

                    //obtener el indice de la grilla que tenga seleccionado
                    if (txtIdInsumo.Text == string.Empty)
                    {
                        ShowMessage("Debe seleccionar un Insumo para eliminar!");
                    }
                    else
                    {
                        InsumosBC.Delete(Convert.ToInt32(txtIdInsumo.Text));

                        txtIdInsumo.Text = string.Empty;
                        txtDescripcion.Text = string.Empty;
                        txtCantidadActual.Text = string.Empty;
                        txtCantidadMaxima.Text = string.Empty;
                        txtCantidadMinima.Text = string.Empty;
                        txtPrecio.Text = string.Empty;
                        cmbTipoInsumo.SelectedIndex = -1;
                        cmbUnidadMedida.SelectedIndex = -1;

                        ShowMessage("Insumo eliminado con éxito!");

                        CargarGrilla();

                        btnEditar.Enabled = false;
                        btnEliminar.Enabled = false;

                    }

                }

                catch (Exception ex)
                {
                    ProcesarExcepciones(ex);
                }
            }

        protected void cusUnidadMedida_ServerValidate(object source,ServerValidateEventArgs args)
        {
            if (cmbUnidadMedida.SelectedIndex > 0)
                args.IsValid = true;
            else
                args.IsValid = false;
        }

        protected void cusTipoInsumo_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (cmbTipoInsumo.SelectedIndex > 0)
                args.IsValid = true;
            else
                args.IsValid = false;
        }

        }
    }
